// This example shows how to filter the events by their category. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using System.Threading; using OpcLabs.EasyOpc.AlarmsAndEvents; using OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel; using OpcLabs.EasyOpc.DataAccess; namespace DocExamples.AlarmsAndEvents._EasyAEClient { partial class SubscribeEvents { // Instantiate the OPC-A&E client object. static readonly EasyAEClient AEClient = new EasyAEClient(); // Instantiate the OPC-DA client object. static readonly EasyDAClient DAClient = new EasyDAClient(); public static void FilterByCategories() { var eventHandler = new EasyAENotificationEventHandler(AEClient_Notification_FilterByCategories); AEClient.Notification += eventHandler; Console.WriteLine("Processing event notifications..."); var subscriptionFilter = new AESubscriptionFilter { Categories = new long[] { 15531778 } }; // You can also filter using event types, severity, areas, and sources. int handle = AEClient.SubscribeEvents("", "OPCLabs.KitEventServer.2", 1000, null, subscriptionFilter); // Allow time for initial refresh Thread.Sleep(5 * 1000); // Set some events to active state. DAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState1.Activate", true); DAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState2.Activate", true); Thread.Sleep(10 * 1000); AEClient.UnsubscribeEvents(handle); AEClient.Notification -= eventHandler; } // Notification event handler static void AEClient_Notification_FilterByCategories(object sender, EasyAENotificationEventArgs e) { Console.WriteLine(); Console.WriteLine(e); if (!e.Succeeded) return; Console.WriteLine("Refresh: {0}", e.Refresh); Console.WriteLine("RefreshComplete: {0}", e.RefreshComplete); AEEventData eventData = e.EventData; if (!(eventData is null)) { Console.WriteLine("Event.CategoryId: {0}", eventData.CategoryId); Console.WriteLine("Event.QualifiedSourceName: {0}", eventData.QualifiedSourceName); Console.WriteLine("Event.Message: {0}", eventData.Message); Console.WriteLine("Event.Active: {0}", eventData.Active); Console.WriteLine("Event.Acknowledged: {0}", eventData.Acknowledged); } } } }
# This example shows how to filter the events by their category. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc import * from OpcLabs.EasyOpc.AlarmsAndEvents import * from OpcLabs.EasyOpc.DataAccess import * from OpcLabs.EasyOpc.OperationModel import * # Notification event handler def notification(sender, e): print() print(e) if not e.Succeeded: return print('Refresh: ', e.Refresh, sep='') print('RefreshComplete: ', e.RefreshComplete, sep='') eventData = e.EventData if eventData is not None: print('Event.CategoryId: ', eventData.CategoryId, sep='') print('Event.QualifiedSourceName: ', eventData.QualifiedSourceName, sep='') print('Event.Message: ', eventData.Message, sep='') print('Event.Active: ', eventData.Active, sep='') print('Event.Acknowledged: ', eventData.Acknowledged, sep='') # Instantiate the OPC-A&E client object. aeClient = EasyAEClient() # Instantiate the OPC-DA client object. daClient = EasyDAClient() # aeClient.Notification += notification print('Processing event notifications...') subscriptionFilter = AESubscriptionFilter() subscriptionFilter.Categories = [15531778] # You can also filter using event types, severity, areas, and sources. handle = IEasyAEClientExtension.SubscribeEvents(aeClient, '', 'OPCLabs.KitEventServer.2', 1000, None, subscriptionFilter) # Allow time for initial refresh. time.sleep(5) # Set some events to active state. try: IEasyDAClientExtension.WriteItemValue(daClient, '', 'OPCLabs.KitServer.2', 'SimulateEvents.ConditionState1.Activate', True) IEasyDAClientExtension.WriteItemValue(daClient, '', 'OPCLabs.KitServer.2', 'SimulateEvents.ConditionState2.Activate', True) except OpcException as opcException: print('*** Failure: ' + opcException.GetBaseException().Message) exit() time.sleep(10) aeClient.UnsubscribeEvents(handle) aeClient.Notification -= notification print('Finished.')
' This example shows how to filter the events by their category. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports System.Threading Imports OpcLabs.EasyOpc.AlarmsAndEvents Imports OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel Imports OpcLabs.EasyOpc.DataAccess Namespace AlarmsAndEvents._EasyAEClient Partial Friend Class SubscribeEvents _ Private Shared ReadOnly AEClient As New EasyAEClient() _ Private Shared ReadOnly DAClient As New EasyDAClient() Public Shared Sub FilterByCategories() Dim eventHandler = New EasyAENotificationEventHandler(AddressOf AEClient_Notification_FilterByCategories) AddHandler AEClient.Notification, eventHandler Console.WriteLine("Processing event notifications...") Dim subscriptionFilter As New AESubscriptionFilter() With _ {.Categories = New Long() {15531778}} ' You can also filter using event types, severity, areas, and sources. Dim handle As Integer = AEClient.SubscribeEvents("", "OPCLabs.KitEventServer.2", Nothing, subscriptionFilter) ' Allow time for initial refresh Thread.Sleep(5 * 1000) ' Set some events to active state. DAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState1.Activate", True) DAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState2.Activate", True) Thread.Sleep(10 * 1000) AEClient.UnsubscribeEvents(handle) RemoveHandler AEClient.Notification, eventHandler End Sub ' Notification event handler Private Shared Sub AEClient_Notification_FilterByCategories(ByVal sender As Object, ByVal e As EasyAENotificationEventArgs) Console.WriteLine() Console.WriteLine(e) If Not e.Succeeded Then Exit Sub End If Console.WriteLine("Refresh: {0}", e.Refresh) Console.WriteLine("RefreshComplete: {0}", e.RefreshComplete) Dim eventData As AEEventData = e.EventData If e.EventData IsNot Nothing Then Console.WriteLine("Event.CategoryId: {0}", eventData.CategoryId) Console.WriteLine("Event.QualifiedSourceName: {0}", eventData.QualifiedSourceName) Console.WriteLine("Event.Message: {0}", eventData.Message) Console.WriteLine("Event.Active: {0}", eventData.Active) Console.WriteLine("Event.Acknowledged: {0}", eventData.Acknowledged) End If End Sub End Class End Namespace
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved.
Send Documentation Feedback. Technical Support